#!/bin/sh

# 定义备份目录
backup_dir="/root/.backup"

# 定义主函数
main() {
  trap handle_interrupt INT  # 捕获 Ctrl-C 信号

  case "$1" in
    clean)
      clean_files
      ;;
    *)
      download_and_execute
      ;;
  esac
}

# 处理 Ctrl-C 信号的函数
handle_interrupt() {
  echo "接收到 Ctrl-C，正在备份文件..."
  backup_files
}

# 备份文件的函数
backup_files() {
  # 创建备份目录
  backup_date_dir="$backup_dir/$(date +%Y-%m-%d_%H-%M-%S)"
  mkdir -p "$backup_date_dir"

  # 将 /root/pve_source* 文件复制到备份目录
  for file in /root/pve_source*; do
    if [ -f "$file" ]; then
      cp "$file" "$backup_date_dir"
    fi
  done

  echo "文件已备份到 $backup_date_dir"
}

# 清理文件的函数
clean_files() {
  echo "正在清理文件..."
  rm -rf /root/pve_source*
  echo "清理完成。"
}

# 下载、解压和执行的函数
download_and_execute() {
  echo "正在下载文件..."
  wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2024-01-06/file/24f723efc6ab4913b1f99c97a1d1a472b2.gz'
  
  if [ $? -ne 0 ]; then
    echo "下载失败，请检查链接是否有效或网络连接是否正常。"
    exit 1
  fi

  echo "下载完成，正在解压..."
  tar zxvf /root/pve_source.tar.gz -C /root/

  if [ $? -ne 0 ]; then
    echo "解压失败，请检查文件是否损坏。"
    exit 1
  fi

  echo "解压完成，正在执行 pve_source..."
  /root/pve_source

}

# 调用主函数，并传入所有参数
main "$@"
